package com.industry.product.dal.dataobject;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.industry.framework.core.annountions.record.IdooRecordBizType;
import com.industry.framework.core.annountions.record.IdooRecordProperty;
import com.industry.system.dal.dataobject.BaseEntity;
import java.io.Serializable;
import java.math.BigDecimal;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 产品基本信息
 * </p>
 *
 * @author nbZhuoZh
 * @since 2025-04-10
 */
@Data
@IdooRecordBizType
@TableName("product")
public class Product extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**租户编号*/
    private String tenantId;

    /**部门ID；空则为公共客户数据*/
    private String deptId;

    /**产品名称*/
    @IdooRecordProperty(value = "产品名称")
    private String productName;

    /**产品编号*/
    @IdooRecordProperty(value = "产品编号")
    private String productCode;

    /**产品图片*/
    private String productPic;

    /**产品类型（销售、采购、生产）*/
    @IdooRecordProperty(value = "产品类型")
    private String productType;

    /**产品信息（实物、服务、组合）*/
    @IdooRecordProperty(value = "产品信息")
    private String productInfo;

    /**产品种类（成品、半成品、原材料）*/
    @IdooRecordProperty(value="产品种类" , codeKey = "PRODUCT_CATEGORY")
    private String productCategory;

    /**开票规则*/
    @IdooRecordProperty(value="开票规则" , codeKey = "PRODUCT_INVOICING_RULE")
    private String productInvoicing;

    /**销售价格*/
    @IdooRecordProperty(value="销售价格",idooSelector = false)
    private BigDecimal productSailPrice;

    /**销售税*/
    @IdooRecordProperty(value = "销售税",codeKey = "PRODUCT_SAIL_TAX")
    private String productSailTax;

    /**采购价格*/
    @IdooRecordProperty(value = "采购价格",idooSelector = false)
    private BigDecimal productPurchasePrice;

    /**采购税*/
    @IdooRecordProperty(value = "采购税" ,idooSelector = false)
    private String productPurchaseTax;

    /**成本（如果存在bom可通过bom计算）*/
    @IdooRecordProperty(value = "成本" , idooSelector = false)
    private BigDecimal productPrice;

    /**库存数量*/
    @IdooRecordProperty(value = "库存数量",idooSelector = false)
    private String productInventoryNum;

    /**是否开启库存计划 1否 0是 (是的时候展示库存数量)*/
    @IdooRecordProperty(value = "是否开启库存计划" , codeKey = "SYSTEM_YSE_OR_NO",idooSelector = false)
    private String productHasInventoryPlan;

    /**产品说明*/
    private String productDescribe;

    /**质保期（码表配置）*/
    private String productWarranty;

    /**计量单位*/
    @IdooRecordProperty(value = "计量单位",idooSelector = false)
    private String productUnit;

    /**创建部门*/
    private String createDept;

    /**删除标记*/
    @TableLogic
    private String delFlag;
}
